package com.tpyule.tpclass.dao;

import com.tpyule.tpclass.entity.bo.CourseBo;
import com.tpyule.tpclass.entity.bo.CourseDetailBo;
import com.tpyule.tpclass.entity.bo.CourseManageBo;
import com.tpyule.tpclass.entity.dto.CourseByTId;
import com.tpyule.tpclass.entity.dto.CourseManageQueryDto;
import com.tpyule.tpclass.entity.dto.CourseParamDto;
import com.tpyule.tpclass.entity.pojo.Course;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface CourseDao {
    /**
     * 获取前台展示课程
     * @param courseParamDto 课程查询参数
     * @return
     */
    public List<Course> getAllCourse(CourseParamDto courseParamDto);

    /**
     * 获取管理课程信息
     * @param dto 课程查询参数
     * @return
     */
    public List<CourseManageBo> getListManageCourse(CourseManageQueryDto dto);


    /**
     * 获取管理课程信息数量
     * @param dto 课程查询参数
     * @return
     */
    public int getSizeManageCourse(CourseManageQueryDto dto);

    /**
     * 获取管理审核课程信息
     * @param dto 课程查询参数
     * @return
     */
    public List<CourseManageBo> getListAuditCourse(CourseManageQueryDto dto);


    /**
     * 获取管理审核课程信息数量
     * @param dto 课程查询参数
     * @return
     */
    public int getSizeAuditCourse(CourseManageQueryDto dto);


    /**
     * 教师管理获取课程
     * @param courseByTId
     * @return
     */
    public List<Course> getListCourseByTeacherId(CourseByTId courseByTId);
    /**
     * 添加课程
     * @param course 添加课程
     * @return
     */
    public void addCourse(Course course);

    /**
     * 根据课程ID获取课程信息
     * @param courseId
     * @return
     */
    public Course getCourseById(String courseId);

    /**
     * 删除课程通过课程ID
     * @param courseId
     */
    public int  deleteCourseById(String courseId);

    /**
     * 根据课程ID获取课程详情页的具体信息
     * @param courseId
     * @return
     */
    public CourseDetailBo getDetailPage(String courseId );

    /**
     * 更新课程
     * @param course
     * @return
     */
    public int updateCourse(Course course);

    /**
     * 获取方向或分类下课程数量
     * @param courseParamDto
     * @return
     */
    public int getSizeCourse(CourseParamDto courseParamDto);

    /**
     * 查询问题对应的课程信息
     * @param questionId
     * @return
     */
    public Course getCourseByQId(String questionId);

    /**
     * 获取state=1=2 审核通过的
     * @param userId
     * @return
     */
    public List<Course> getCourseToShow(String userId);

    /**
     * 用户修改课程基本信息
     * @param courseId
     * @return
     */
    public CourseBo getCourseBoById(String courseId);

    /**
     * 更新学习人数
     * @param courseId
     */
    public void addNumber(String courseId);

}
